package com.jeason.blogcommon.utils;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * @author 26950
 * @date 2021/2/3 14:51
 */
public class ClassUtil {
    /**
     * 获取一个类的所有字段名称
     * @param clazz
     * @return
     */
    public static List<String> getFieldNameList(Class clazz) {
        List<String> fieldNameList = new ArrayList<>();

        // 1. 获取本类字段
        Field[] filed = clazz.getDeclaredFields();
        for(Field fd : filed) {
            String filedName = fd.getName();
            // 将序列化的属性排除
            if (!"serialVersionUID".equals(filedName)) {
                fieldNameList.add(filedName);
            }
        }

        // 2. 获取父类字段
        Class<?> superClazz = clazz.getSuperclass();
        if (superClazz != null) {
            Field[] superFields = superClazz.getDeclaredFields();
            for (Field superField : superFields) {
                String filedName = superField.getName();
                // 将序列化的属性排除
                if (!"serialVersionUID".equals(filedName)) {
                    fieldNameList.add(filedName);
                }
            }
        }

        return fieldNameList;
    }
}
